package org.example.consumer.config;

import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.util.List;

@Configuration
public class TemplateConfig {
    @LoadBalanced //解决负载均衡问题
    @Bean
//    RestTemplateBuilder builder
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
//        //先获取到converter列表
//        RestTemplate restTemplate = builder.build();
//        List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters();
//        for (HttpMessageConverter<?> converter : converters) {
//            //添加jsonConverter支持对text/plan的解析
//            if (converter instanceof MappingJackson2HttpMessageConverter) {
//                try {
//                    List<MediaType> mediaTypeList = new ArrayList<>(converter.getSupportedMediaTypes());
//                    //加入对text/plan的支持
//                    mediaTypeList.add(MediaType.TEXT_PLAIN);
//                    mediaTypeList.add(MediaType.TEXT_HTML);
//                    //将已经加入了text/plan的MediaType支持列表设置为其支持的媒体类型列表
//                    ((MappingJackson2HttpMessageConverter) converter).setSupportedMediaTypes(mediaTypeList);
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//        restTemplate.setRequestFactory(clientHttpRequestFactory());
//        return restTemplate;
    }

//    @Bean
//    public ClientHttpRequestFactory clientHttpRequestFactory() {
//        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
//        factory.setConnectTimeout(10000);
//        factory.setReadTimeout(10000);
//        return factory;
//    }
}
